home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / util / moni / Scout-src.lha / netinclude / inline / socket.h < prev    next >
C/C++ Source or Header  |  2002-09-16  |  21KB  |  752 lines

  1. #ifndef _INLINE_SOCKET_H
  2. #define _INLINE_SOCKET_H \
  3.     "$Id: socket.h,v 1.1.1.1 2001/11/26 22:21:16 tboeckel Exp $"
  4.  
  5. /* If you have used Capitalized socket function names, please include
  6.    <amitcp/bignames.h> as first file in your c programs. Use of
  7.    capitalized function names is discouraged in future projects */
  8.  
  9. #ifndef _CDEFS_H_
  10. #include <sys/cdefs.h>
  11. #endif
  12. #ifndef _INLINE_STUBS_H_
  13. #include <inline/stubs.h>
  14. #endif
  15.  
  16. __BEGIN_DECLS
  17.  
  18. #ifndef BASE_EXT_DECL
  19. #define BASE_EXT_DECL
  20. #define BASE_EXT_DECL0 extern struct Library * SocketBase;
  21. #endif
  22. #ifndef BASE_PAR_DECL
  23. #define BASE_PAR_DECL
  24. #define BASE_PAR_DECL0 void
  25. #endif
  26. #ifndef BASE_NAME
  27. #define BASE_NAME SocketBase
  28. #endif
  29.  
  30. BASE_EXT_DECL0
  31.  
  32. extern __inline LONG
  33. CloseSocket (BASE_PAR_DECL LONG d)
  34. {
  35.     BASE_EXT_DECL
  36.     register res __asm("d0");
  37.     register struct Library *a6 __asm("a6") = BASE_NAME;
  38.     register LONG d0 __asm("d0") = d;
  39.     __asm __volatile ("jsr a6@(-0x78)"
  40.     : "=r" (res)
  41.     : "r" (a6), "r" (d0)
  42.     : "d0", "d1", "a0", "a1");
  43.     return res;
  44. }
  45. extern __inline LONG
  46. Dup2Socket (BASE_PAR_DECL LONG fd1, LONG fd2)
  47. {
  48.     BASE_EXT_DECL
  49.     register res __asm("d0");
  50.     register struct Library *a6 __asm("a6") = BASE_NAME;
  51.     register LONG d0 __asm("d0") = fd1;
  52.     register LONG d1 __asm("d1") = fd2;
  53.     __asm __volatile ("jsr a6@(-0x108)"
  54.     : "=r" (res)
  55.     : "r" (a6), "r" (d0), "r" (d1)
  56.     : "d0", "d1", "a0", "a1");
  57.     return res;
  58. }
  59. extern __inline LONG
  60. Errno (BASE_PAR_DECL0)
  61. {
  62.     BASE_EXT_DECL
  63.     register res __asm("d0");
  64.     register struct Library *a6 __asm("a6") = BASE_NAME;
  65.     __asm __volatile ("jsr a6@(-0xa2)"
  66.     : "=r" (res)
  67.     : "r" (a6)
  68.     : "d0", "d1", "a0", "a1");
  69.     return res;
  70. }
  71. extern __inline LONG
  72. GetSocketEvents (BASE_PAR_DECL ULONG * eventmaskp)
  73. {
  74.     BASE_EXT_DECL
  75.     register res __asm("d0");
  76.     register struct Library *a6 __asm("a6") = BASE_NAME;
  77.     register ULONG * a0 __asm("a0") = eventmaskp;
  78.     __asm __volatile ("jsr a6@(-0x12c)"
  79.     : "=r" (res)
  80.     : "r" (a6), "r" (a0)
  81.     : "d0", "d1", "a0", "a1");
  82.     return res;
  83. }
  84. extern __inline ULONG
  85. Inet_LnaOf (BASE_PAR_DECL LONG in)
  86. {
  87.     BASE_EXT_DECL
  88.     register res __asm("d0");
  89.     register struct Library *a6 __asm("a6") = BASE_NAME;
  90.     register LONG d0 __asm("d0") = in;
  91.     __asm __volatile ("jsr a6@(-0xba)"
  92.     : "=r" (res)
  93.     : "r" (a6), "r" (d0)
  94.     : "d0", "d1", "a0", "a1");
  95.     return res;
  96. }
  97. extern __inline ULONG
  98. Inet_MakeAddr (BASE_PAR_DECL ULONG net, ULONG host)
  99. {
  100.     BASE_EXT_DECL
  101.     register res __asm("d0");
  102.     register struct Library *a6 __asm("a6") = BASE_NAME;
  103.     register ULONG d0 __asm("d0") = net;
  104.     register ULONG d1 __asm("d1") = host;
  105.     __asm __volatile ("jsr a6@(-0xc6)"
  106.     : "=r" (res)
  107.     : "r" (a6), "r" (d0), "r" (d1)
  108.     : "d0", "d1", "a0", "a1");
  109.     return res;
  110. }
  111. extern __inline ULONG
  112. Inet_NetOf (BASE_PAR_DECL LONG in)
  113. {
  114.     BASE_EXT_DECL
  115.     register res __asm("d0");
  116.     register struct Library *a6 __asm("a6") = BASE_NAME;
  117.     register LONG d0 __asm("d0") = in;
  118.     __asm __volatile ("jsr a6@(-0xc0)"
  119.     : "=r" (res)
  120.     : "r" (a6), "r" (d0)
  121.     : "d0", "d1", "a0", "a1");
  122.     return res;
  123. }
  124. extern __inline char *
  125. Inet_NtoA (BASE_PAR_DECL ULONG in)
  126. {
  127.     BASE_EXT_DECL
  128.     register char * res __asm("d0");
  129.     register struct Library *a6 __asm("a6") = BASE_NAME;
  130.     register ULONG d0 __asm("d0") = in;
  131.     __asm __volatile ("jsr a6@(-0xae)"
  132.     : "=r" (res)
  133.     : "r" (a6), "r" (d0)
  134.     : "d0", "d1", "a0", "a1");
  135.     return res;
  136. }
  137. extern __inline LONG
  138. IoctlSocket (BASE_PAR_DECL LONG d, ULONG request, char * argp)
  139. {
  140.     BASE_EXT_DECL
  141.     register res __asm("d0");
  142.     register struct Library *a6 __asm("a6") = BASE_NAME;
  143.     register LONG d0 __asm("d0") = d;
  144.     register ULONG d1 __asm("d1") = request;
  145.     register char * a0 __asm("a0") = argp;
  146.     __asm __volatile ("jsr a6@(-0x72)"
  147.     : "=r" (res)
  148.     : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  149.     : "d0", "d1", "a0", "a1");
  150.     return res;
  151. }
  152. extern __inline LONG
  153. ObtainSocket (BASE_PAR_DECL LONG id, LONG domain, LONG type, LONG protocol)
  154. {
  155.     BASE_EXT_DECL
  156.     register res __asm("d0");
  157.     register struct Library *a6 __asm("a6") = BASE_NAME;
  158.     register LONG d0 __asm("d0") = id;
  159.     register LONG d1 __asm("d1") = domain;
  160.     register LONG d2 __asm("d2") = type;
  161.     register LONG d3 __asm("d3") = protocol;
  162.     __asm __volatile ("jsr a6@(-0x90)"
  163.     : "=r" (res)
  164.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (d3)
  165.     : "d0", "d1", "a0", "a1", "d2", "d3");
  166.     return res;
  167. }
  168. extern __inline LONG
  169. ReleaseCopyOfSocket (BASE_PAR_DECL LONG fd, LONG id)
  170. {
  171.     BASE_EXT_DECL
  172.     register res __asm("d0");
  173.     register struct Library *a6 __asm("a6") = BASE_NAME;
  174.     register LONG d0 __asm("d0") = fd;
  175.     register LONG d1 __asm("d1") = id;
  176.     __asm __volatile ("jsr a6@(-0x9c)"
  177.     : "=r" (res)
  178.     : "r" (a6), "r" (d0), "r" (d1)
  179.     : "d0", "d1", "a0", "a1");
  180.     return res;
  181. }
  182. extern __inline LONG
  183. ReleaseSocket (BASE_PAR_DECL LONG fd, LONG id)
  184. {
  185.     BASE_EXT_DECL
  186.     register res __asm("d0");
  187.     register struct Library *a6 __asm("a6") = BASE_NAME;
  188.     register LONG d0 __asm("d0") = fd;
  189.     register LONG d1 __asm("d1") = id;
  190.     __asm __volatile ("jsr a6@(-0x96)"
  191.     : "=r" (res)
  192.     : "r" (a6), "r" (d0), "r" (d1)
  193.     : "d0", "d1", "a0", "a1");
  194.     return res;
  195. }
  196. extern __inline LONG
  197. SetErrnoPtr (BASE_PAR_DECL void * errno_p, LONG size)
  198. {
  199.     BASE_EXT_DECL
  200.     register res __asm("d0");
  201.     register struct Library *a6 __asm("a6") = BASE_NAME;
  202.     register void * a0 __asm("a0") = errno_p;
  203.     register LONG d0 __asm("d0") = size;
  204.     __asm __volatile ("jsr a6@(-0xa8)"
  205.     : "=r" (res)
  206.     : "r" (a6), "r" (a0), "r" (d0)
  207.     : "d0", "d1", "a0", "a1");
  208.     return res;
  209. }
  210. extern __inline void
  211. SetSocketSignals (BASE_PAR_DECL ULONG SIGINTR, ULONG SIGIO, ULONG SIGURG)
  212. {
  213.     BASE_EXT_DECL
  214.     register struct Library *a6 __asm("a6") = BASE_NAME;
  215.     register ULONG d0 __asm("d0") = SIGINTR;
  216.     register ULONG d1 __asm("d1") = SIGIO;
  217.     register ULONG d2 __asm("d2") = SIGURG;
  218.     __asm __volatile ("jsr a6@(-0x84)"
  219.     : /* No Output */
  220.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  221.     : "d0", "d1", "a0", "a1", "d2");
  222. }
  223. extern __inline LONG
  224. SocketBaseTagList (BASE_PAR_DECL struct TagItem * taglist)
  225. {
  226.     BASE_EXT_DECL
  227.     register res __asm("d0");
  228.     register struct Library *a6 __asm("a6") = BASE_NAME;
  229.     register struct TagItem * a0 __asm("a0") = taglist;
  230.     __asm __volatile ("jsr a6@(-0x126)"
  231.     : "=r" (res)
  232.     : "r" (a6), "r" (a0)
  233.     : "d0", "d1", "a0", "a1");
  234.     return res;
  235. }
  236. #ifndef NO_INLINE_STDARG
  237. #define SocketBaseTags(tags...) \
  238.   ({ struct TagItem _tags[] = { tags }; SocketBaseTagList (_tags); })
  239. #endif /* not NO_INLINE_STDARG */
  240.  
  241. extern __inline LONG
  242. WaitSelect (BASE_PAR_DECL LONG nfds, fd_set * readfds, fd_set * writefds, fd_set * execptfds, struct timeval * timeout, ULONG * maskp)
  243. {
  244.     BASE_EXT_DECL
  245.     register res __asm("d0");
  246.     register struct Library *a6 __asm("a6") = BASE_NAME;
  247.     register LONG d0 __asm("d0") = nfds;
  248.     register fd_set * a0 __asm("a0") = readfds;
  249.     register fd_set * a1 __asm("a1") = writefds;
  250.     register fd_set * a2 __asm("a2") = execptfds;
  251.     register struct timeval * a3 __asm("a3") = timeout;
  252.     register ULONG * d1 __asm("d1") = maskp;
  253.     __asm __volatile ("jsr a6@(-0x7e)"
  254.     : "=r" (res)
  255.     : "r" (a6), "r" (d0), "r" (a0), "r" (a1), "r" (a2), "r" (a3), "r" (d1)
  256.     : "d0", "d1", "a0", "a1", "a2", "a3");
  257.     return res;
  258. }
  259. extern __inline LONG
  260. accept (BASE_PAR_DECL LONG s, struct sockaddr * addr, LONG * addrlen)
  261. {
  262.     BASE_EXT_DECL
  263.     register res __asm("d0");
  264.     register struct Library *a6 __asm("a6") = BASE_NAME;
  265.     register LONG d0 __asm("d0") = s;
  266.     register struct sockaddr * a0 __asm("a0") = addr;
  267.     register LONG * a1 __asm("a1") = addrlen;
  268.     __asm __volatile ("jsr a6@(-0x30)"
  269.     : "=r" (res)
  270.     : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  271.     : "d0", "d1", "a0", "a1");
  272.     return res;
  273. }
  274. extern __inline LONG
  275. bind (BASE_PAR_DECL LONG s, const struct sockaddr * name, LONG namelen)
  276. {
  277.     BASE_EXT_DECL
  278.     register res __asm("d0");
  279.     register struct Library *a6 __asm("a6") = BASE_NAME;
  280.     register LONG d0 __asm("d0") = s;
  281.     register const struct sockaddr * a0 __asm("a0") = name;
  282.     register LONG d1 __asm("d1") = namelen;
  283.     __asm __volatile ("jsr a6@(-0x24)"
  284.     : "=r" (res)
  285.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  286.     : "d0", "d1", "a0", "a1");
  287.     return res;
  288. }
  289. extern __inline LONG
  290. connect (BASE_PAR_DECL LONG s, const struct sockaddr * name, LONG namelen)
  291. {
  292.     BASE_EXT_DECL
  293.     register res __asm("d0");
  294.     register struct Library *a6 __asm("a6") = BASE_NAME;
  295.     register LONG d0 __asm("d0") = s;
  296.     register const struct sockaddr * a0 __asm("a0") = name;
  297.     register LONG d1 __asm("d1") = namelen;
  298.     __asm __volatile ("jsr a6@(-0x36)"
  299.     : "=r" (res)
  300.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  301.     : "d0", "d1", "a0", "a1");
  302.     return res;
  303. }
  304. extern __inline LONG
  305. getdtablesize (BASE_PAR_DECL0)
  306. {
  307.     BASE_EXT_DECL
  308.     register res __asm("d0");
  309.     register struct Library *a6 __asm("a6") = BASE_NAME;
  310.     __asm __volatile ("jsr a6@(-0x8a)"
  311.     : "=r" (res)
  312.     : "r" (a6)
  313.     : "d0", "d1", "a0", "a1");
  314.     return res;
  315. }
  316. extern __inline struct hostent  *
  317. gethostbyaddr (BASE_PAR_DECL const UBYTE * addr, LONG len, LONG type)
  318. {
  319.     BASE_EXT_DECL
  320.     register struct hostent * res __asm("d0");
  321.     register struct Library *a6 __asm("a6") = BASE_NAME;
  322.     register const UBYTE * a0 __asm("a0") = addr;
  323.     register LONG d0 __asm("d0") = len;
  324.     register LONG d1 __asm("d1") = type;
  325.     __asm __volatile ("jsr a6@(-0xd8)"
  326.     : "=r" (res)
  327.     : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  328.     : "d0", "d1", "a0", "a1");
  329.     return res;
  330. }
  331. extern __inline struct hostent  *
  332. gethostbyname (BASE_PAR_DECL const UBYTE * name)
  333. {
  334.     BASE_EXT_DECL
  335.     register struct hostent * res __asm("d0");
  336.     register struct Library *a6 __asm("a6") = BASE_NAME;
  337.     register const UBYTE * a0 __asm("a0") = name;
  338.     __asm __volatile ("jsr a6@(-0xd2)"
  339.     : "=r" (res)
  340.     : "r" (a6), "r" (a0)
  341.     : "d0", "d1", "a0", "a1");
  342.     return res;
  343. }
  344. extern __inline ULONG
  345. gethostid (BASE_PAR_DECL0)
  346. {
  347.     BASE_EXT_DECL
  348.     register res __asm("d0");
  349.     register struct Library *a6 __asm("a6") = BASE_NAME;
  350.     __asm __volatile ("jsr a6@(-0x120)"
  351.     : "=r" (res)
  352.     : "r" (a6)
  353.     : "d0", "d1", "a0", "a1");
  354.     return res;
  355. }
  356. extern __inline LONG
  357. gethostname (BASE_PAR_DECL STRPTR hostname, LONG size)
  358. {
  359.     BASE_EXT_DECL
  360.     register res __asm("d0");
  361.     register struct Library *a6 __asm("a6") = BASE_NAME;
  362.     register STRPTR a0 __asm("a0") = hostname;
  363.     register LONG d0 __asm("d0") = size;
  364.     __asm __volatile ("jsr a6@(-0x11a)"
  365.     : "=r" (res)
  366.     : "r" (a6), "r" (a0), "r" (d0)
  367.     : "d0", "d1", "a0", "a1");
  368.     return res;
  369. }
  370. extern __inline struct netent   *
  371. getnetbyaddr (BASE_PAR_DECL LONG net, LONG type)
  372. {
  373.     BASE_EXT_DECL
  374.     register struct netent * res __asm("d0");
  375.     register struct Library *a6 __asm("a6") = BASE_NAME;
  376.     register LONG d0 __asm("d0") = net;
  377.     register LONG d1 __asm("d1") = type;
  378.     __asm __volatile ("jsr a6@(-0xe4)"
  379.     : "=r" (res)
  380.     : "r" (a6), "r" (d0), "r" (d1)
  381.     : "d0", "d1", "a0", "a1");
  382.     return res;
  383. }
  384. extern __inline struct netent   *
  385. getnetbyname (BASE_PAR_DECL const UBYTE * name)
  386. {
  387.     BASE_EXT_DECL
  388.     register struct netent * res __asm("d0");
  389.     register struct Library *a6 __asm("a6") = BASE_NAME;
  390.     register const UBYTE * a0 __asm("a0") = name;
  391.     __asm __volatile ("jsr a6@(-0xde)"
  392.     : "=r" (res)
  393.     : "r" (a6), "r" (a0)
  394.     : "d0", "d1", "a0", "a1");
  395.     return res;
  396. }
  397. extern __inline LONG
  398. getpeername (BASE_PAR_DECL LONG s, struct sockaddr * hostname, LONG * namelen)
  399. {
  400.     BASE_EXT_DECL
  401.     register res __asm("d0");
  402.     register struct Library *a6 __asm("a6") = BASE_NAME;
  403.     register LONG d0 __asm("d0") = s;
  404.     register struct sockaddr * a0 __asm("a0") = hostname;
  405.     register LONG * a1 __asm("a1") = namelen;
  406.     __asm __volatile ("jsr a6@(-0x6c)"
  407.     : "=r" (res)
  408.     : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  409.     : "d0", "d1", "a0", "a1");
  410.     return res;
  411. }
  412. extern __inline struct protoent *
  413. getprotobyname (BASE_PAR_DECL const UBYTE * name)
  414. {
  415.     BASE_EXT_DECL
  416.     register struct protoent * res __asm("d0");
  417.     register struct Library *a6 __asm("a6") = BASE_NAME;
  418.     register const UBYTE * a0 __asm("a0") = name;
  419.     __asm __volatile ("jsr a6@(-0xf6)"
  420.     : "=r" (res)
  421.     : "r" (a6), "r" (a0)
  422.     : "d0", "d1", "a0", "a1");
  423.     return res;
  424. }
  425. extern __inline struct protoent *
  426. getprotobynumber (BASE_PAR_DECL LONG proto)
  427. {
  428.     BASE_EXT_DECL
  429.     register struct protoent * res __asm("d0");
  430.     register struct Library *a6 __asm("a6") = BASE_NAME;
  431.     register LONG d0 __asm("d0") = proto;
  432.     __asm __volatile ("jsr a6@(-0xfc)"
  433.     : "=r" (res)
  434.     : "r" (a6), "r" (d0)
  435.     : "d0", "d1", "a0", "a1");
  436.     return res;
  437. }
  438. extern __inline struct servent  *
  439. getservbyname (BASE_PAR_DECL const UBYTE * name, const UBYTE * proto)
  440. {
  441.     BASE_EXT_DECL
  442.     register struct servent * res __asm("d0");
  443.     register struct Library *a6 __asm("a6") = BASE_NAME;
  444.     register const UBYTE * a0 __asm("a0") = name;
  445.     register const UBYTE * a1 __asm("a1") = proto;
  446.     __asm __volatile ("jsr a6@(-0xea)"
  447.     : "=r" (res)
  448.     : "r" (a6), "r" (a0), "r" (a1)
  449.     : "d0", "d1", "a0", "a1");
  450.     return res;
  451. }
  452. extern __inline struct servent  *
  453. getservbyport (BASE_PAR_DECL LONG port, const UBYTE * proto)
  454. {
  455.     BASE_EXT_DECL
  456.     register struct servent * res __asm("d0");
  457.     register struct Library *a6 __asm("a6") = BASE_NAME;
  458.     register LONG d0 __asm("d0") = port;
  459.     register const UBYTE * a0 __asm("a0") = proto;
  460.     __asm __volatile ("jsr a6@(-0xf0)"
  461.     : "=r" (res)
  462.     : "r" (a6), "r" (d0), "r" (a0)
  463.     : "d0", "d1", "a0", "a1");
  464.     return res;
  465. }
  466. extern __inline LONG
  467. getsockname (BASE_PAR_DECL LONG s, struct sockaddr * hostname, LONG * namelen)
  468. {
  469.     BASE_EXT_DECL
  470.     register res __asm("d0");
  471.     register struct Library *a6 __asm("a6") = BASE_NAME;
  472.     register LONG d0 __asm("d0") = s;
  473.     register struct sockaddr * a0 __asm("a0") = hostname;
  474.     register LONG * a1 __asm("a1") = namelen;
  475.     __asm __volatile ("jsr a6@(-0x66)"
  476.     : "=r" (res)
  477.     : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  478.     : "d0", "d1", "a0", "a1");
  479.     return res;
  480. }
  481. extern __inline LONG
  482. getsockopt (BASE_PAR_DECL LONG s, LONG level, LONG optname, void * optval, LONG * optlen)
  483. {
  484.     BASE_EXT_DECL
  485.     register res __asm("d0");
  486.     register struct Library *a6 __asm("a6") = BASE_NAME;
  487.     register LONG d0 __asm("d0") = s;
  488.     register LONG d1 __asm("d1") = level;
  489.     register LONG d2 __asm("d2") = optname;
  490.     register void * a0 __asm("a0") = optval;
  491.     register LONG * a1 __asm("a1") = optlen;
  492.     __asm __volatile ("jsr a6@(-0x60)"
  493.     : "=r" (res)
  494.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (a1)
  495.     : "d0", "d1", "a0", "a1", "d2");
  496.     return res;
  497. }
  498. extern __inline ULONG
  499. inet_addr (BASE_PAR_DECL const UBYTE * cp)
  500. {
  501.     BASE_EXT_DECL
  502.     register res __asm("d0");
  503.     register struct Library *a6 __asm("a6") = BASE_NAME;
  504.     register const UBYTE * a0 __asm("a0") = cp;
  505.     __asm __volatile ("jsr a6@(-0xb4)"
  506.     : "=r" (res)
  507.     : "r" (a6), "r" (a0)
  508.     : "d0", "d1", "a0", "a1");
  509.     return res;
  510. }
  511. extern __inline ULONG
  512. inet_network (BASE_PAR_DECL const UBYTE * cp)
  513. {
  514.     BASE_EXT_DECL
  515.     register res __asm("d0");
  516.     register struct Library *a6 __asm("a6") = BASE_NAME;
  517.     register const UBYTE * a0 __asm("a0") = cp;
  518.     __asm __volatile ("jsr a6@(-0xcc)"
  519.     : "=r" (res)
  520.     : "r" (a6), "r" (a0)
  521.     : "d0", "d1", "a0", "a1");
  522.     return res;
  523. }
  524. extern __inline LONG
  525. listen (BASE_PAR_DECL LONG s, LONG backlog)
  526. {
  527.     BASE_EXT_DECL
  528.     register res __asm("d0");
  529.     register struct Library *a6 __asm("a6") = BASE_NAME;
  530.     register LONG d0 __asm("d0") = s;
  531.     register LONG d1 __asm("d1") = backlog;
  532.     __asm __volatile ("jsr a6@(-0x2a)"
  533.     : "=r" (res)
  534.     : "r" (a6), "r" (d0), "r" (d1)
  535.     : "d0", "d1", "a0", "a1");
  536.     return res;
  537. }
  538. extern __inline LONG
  539. recv (BASE_PAR_DECL LONG s, UBYTE * buf, LONG len, LONG flags)
  540. {
  541.     BASE_EXT_DECL
  542.     register res __asm("d0");
  543.     register struct Library *a6 __asm("a6") = BASE_NAME;
  544.     register LONG d0 __asm("d0") = s;
  545.     register UBYTE * a0 __asm("a0") = buf;
  546.     register LONG d1 __asm("d1") = len;
  547.     register LONG d2 __asm("d2") = flags;
  548.     __asm __volatile ("jsr a6@(-0x4e)"
  549.     : "=r" (res)
  550.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  551.     : "d0", "d1", "a0", "a1", "d2");
  552.     return res;
  553. }
  554. extern __inline LONG
  555. recvfrom (BASE_PAR_DECL LONG s, UBYTE * buf, LONG len, LONG flags, struct sockaddr * from, LONG * fromlen)
  556. {
  557.     BASE_EXT_DECL
  558.     register res __asm("d0");
  559.     register struct Library *a6 __asm("a6") = BASE_NAME;
  560.     register LONG d0 __asm("d0") = s;
  561.     register UBYTE * a0 __asm("a0") = buf;
  562.     register LONG d1 __asm("d1") = len;
  563.     register LONG d2 __asm("d2") = flags;
  564.     register struct sockaddr * a1 __asm("a1") = from;
  565.     register LONG * a2 __asm("a2") = fromlen;
  566.     __asm __volatile ("jsr a6@(-0x48)"
  567.     : "=r" (res)
  568.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (a2)
  569.     : "d0", "d1", "a0", "a1", "d2", "a2");
  570.     return res;
  571. }
  572. extern __inline LONG
  573. recvmsg (BASE_PAR_DECL LONG s, struct msghdr * msg, LONG flags)
  574. {
  575.     BASE_EXT_DECL
  576.     register res __asm("d0");
  577.     register struct Library *a6 __asm("a6") = BASE_NAME;
  578.     register LONG d0 __asm("d0") = s;
  579.     register struct msghdr * a0 __asm("a0") = msg;
  580.     register LONG d1 __asm("d1") = flags;
  581.     __asm __volatile ("jsr a6@(-0x114)"
  582.     : "=r" (res)
  583.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  584.     : "d0", "d1", "a0", "a1");
  585.     return res;
  586. }
  587. extern __inline LONG
  588. send (BASE_PAR_DECL LONG s, const UBYTE * msg, LONG len, LONG flags)
  589. {
  590.     BASE_EXT_DECL
  591.     register res __asm("d0");
  592.     register struct Library *a6 __asm("a6") = BASE_NAME;
  593.     register LONG d0 __asm("d0") = s;
  594.     register const UBYTE * a0 __asm("a0") = msg;
  595.     register LONG d1 __asm("d1") = len;
  596.     register LONG d2 __asm("d2") = flags;
  597.     __asm __volatile ("jsr a6@(-0x42)"
  598.     : "=r" (res)
  599.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2)
  600.     : "d0", "d1", "a0", "a1", "d2");
  601.     return res;
  602. }
  603. extern __inline LONG
  604. sendmsg (BASE_PAR_DECL LONG s, struct msghdr * msg, LONG flags)
  605. {
  606.     BASE_EXT_DECL
  607.     register res __asm("d0");
  608.     register struct Library *a6 __asm("a6") = BASE_NAME;
  609.     register LONG d0 __asm("d0") = s;
  610.     register struct msghdr * a0 __asm("a0") = msg;
  611.     register LONG d1 __asm("d1") = flags;
  612.     __asm __volatile ("jsr a6@(-0x10e)"
  613.     : "=r" (res)
  614.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1)
  615.     : "d0", "d1", "a0", "a1");
  616.     return res;
  617. }
  618. extern __inline LONG
  619. sendto (BASE_PAR_DECL LONG s, const UBYTE * msg, LONG len, LONG flags, const struct sockaddr * to, LONG tolen)
  620. {
  621.     BASE_EXT_DECL
  622.     register res __asm("d0");
  623.     register struct Library *a6 __asm("a6") = BASE_NAME;
  624.     register LONG d0 __asm("d0") = s;
  625.     register const UBYTE * a0 __asm("a0") = msg;
  626.     register LONG d1 __asm("d1") = len;
  627.     register LONG d2 __asm("d2") = flags;
  628.     register const struct sockaddr * a1 __asm("a1") = to;
  629.     register LONG d3 __asm("d3") = tolen;
  630.     __asm __volatile ("jsr a6@(-0x3c)"
  631.     : "=r" (res)
  632.     : "r" (a6), "r" (d0), "r" (a0), "r" (d1), "r" (d2), "r" (a1), "r" (d3)
  633.     : "d0", "d1", "a0", "a1", "d2", "d3");
  634.     return res;
  635. }
  636. extern __inline LONG
  637. setsockopt (BASE_PAR_DECL LONG s, LONG level, LONG optname, const void * optval, LONG optlen)
  638. {
  639.     BASE_EXT_DECL
  640.     register res __asm("d0");
  641.     register struct Library *a6 __asm("a6") = BASE_NAME;
  642.     register LONG d0 __asm("d0") = s;
  643.     register LONG d1 __asm("d1") = level;
  644.     register LONG d2 __asm("d2") = optname;
  645.     register const void * a0 __asm("a0") = optval;
  646.     register LONG d3 __asm("d3") = optlen;
  647.     __asm __volatile ("jsr a6@(-0x5a)"
  648.     : "=r" (res)
  649.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (d3)
  650.     : "d0", "d1", "a0", "a1", "d2", "d3");
  651.     return res;
  652. }
  653. extern __inline LONG
  654. shutdown (BASE_PAR_DECL LONG s, LONG how)
  655. {
  656.     BASE_EXT_DECL
  657.     register res __asm("d0");
  658.     register struct Library *a6 __asm("a6") = BASE_NAME;
  659.     register LONG d0 __asm("d0") = s;
  660.     register LONG d1 __asm("d1") = how;
  661.     __asm __volatile ("jsr a6@(-0x54)"
  662.     : "=r" (res)
  663.     : "r" (a6), "r" (d0), "r" (d1)
  664.     : "d0", "d1", "a0", "a1");
  665.     return res;
  666. }
  667. extern __inline LONG
  668. socket (BASE_PAR_DECL LONG domain, LONG type, LONG protocol)
  669. {
  670.     BASE_EXT_DECL
  671.     register res __asm("d0");
  672.     register struct Library *a6 __asm("a6") = BASE_NAME;
  673.     register LONG d0 __asm("d0") = domain;
  674.     register LONG d1 __asm("d1") = type;
  675.     register LONG d2 __asm("d2") = protocol;
  676.     __asm __volatile ("jsr a6@(-0x1e)"
  677.     : "=r" (res)
  678.     : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  679.     : "d0", "d1", "a0", "a1", "d2");
  680.     return res;
  681. }
  682. extern __inline void
  683. vsyslog (BASE_PAR_DECL ULONG level, const char * format, LONG * ap)
  684. {
  685.     BASE_EXT_DECL
  686.     register struct Library *a6 __asm("a6") = BASE_NAME;
  687.     register ULONG d0 __asm("d0") = level;
  688.     register const char * a0 __asm("a0") = format;
  689.     register LONG * a1 __asm("a1") = ap;
  690.     __asm __volatile ("jsr a6@(-0x102)"
  691.     : /* No Output */
  692.     : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  693.     : "d0", "d1", "a0", "a1");
  694. }
  695.  
  696.  
  697. extern __inline LONG 
  698. InheritSocket (BASE_PAR_DECL LONG id)
  699. {
  700.   BASE_EXT_DECL
  701.   register LONG  _res  __asm("d0");
  702.   register struct Library * a6 __asm("a6") = BASE_NAME;
  703.   register LONG d0 __asm("d0") = id;
  704.   register LONG d1 __asm("d1") =  0;
  705.   __asm __volatile ("jsr a6@(-0x90)"
  706.   : "=r" (_res)
  707.   : "r" (a6), "r" (d0), "r" (d1)
  708.   : "a0", "a1", "d0", "d1");
  709.   return _res;
  710. }
  711.  
  712. #ifndef NETINET_IN_H
  713. #include <netinet/in.h>
  714. #endif
  715.  
  716. extern __inline char * 
  717.   inet_ntoa(BASE_PAR_DECL struct in_addr addr) 
  718. {
  719.   return Inet_NtoA(addr.s_addr);
  720. }
  721.  
  722. extern __inline struct in_addr
  723.   inet_makeaddr(BASE_PAR_DECL int net, int host)
  724. {
  725.   struct in_addr addr;
  726.  
  727.   addr.s_addr = Inet_MakeAddr(net, host);
  728.   return addr;
  729. }
  730.  
  731. extern __inline unsigned long
  732.   inet_lnaof(BASE_PAR_DECL struct in_addr addr) 
  733. {
  734.   return Inet_LnaOf(addr.s_addr);
  735. }
  736.  
  737. extern __inline unsigned long
  738.   inet_netof(BASE_PAR_DECL struct in_addr addr)
  739. {
  740.   return Inet_NetOf(addr.s_addr);
  741. }
  742.  
  743. #undef BASE_EXT_DECL
  744. #undef BASE_EXT_DECL0
  745. #undef BASE_PAR_DECL
  746. #undef BASE_PAR_DECL0
  747. #undef BASE_NAME
  748.  
  749. __END_DECLS
  750.  
  751. #endif /* _INLINE_SOCKET_H */
  752.